/*
 * IAnimationState.h
 *
 *  Created on: 24.02.2012
 *      Author: Kirill Blinov
 *      Copyright: LGPL
 */

#ifndef IANIMATIONSTATE_H_
#define IANIMATIONSTATE_H_

#include "IAnimationInterface.h"
#include "IPhysicsEngine.h"

class IAnimationState
{
private:
	IAnimationState();
	virtual ~IAnimationState();
public:

	virtual void PlayAnimationStep() = 0;
};

class CBasicAnimation : public IAnimationState, IAnimationInterface
{
private:
	CBasicAnimation();
	virtual ~CBasicAnimation();

protected:

    const std::string animationName;

    //Should be set in constructor
    btRigidBody* phisicBody;
public:

	bool StartAnimation( const float Speed, const long long StartTime ) = 0;

	void StopAnimation( const bool RollbackInitialState ) = 0;

	void PauseAnimation( const long long SuspendTime ) = 0;

	bool RestoreAnimation() = 0;

	virtual std::string GetName() const { return animationName; };
};

class CBonesAnimation : public CBasicAnimation
{
private:
	CBonesAnimation();
	virtual ~CBonesAnimation();
public:

};

class CMaitrixAnimation : public CBasicAnimation
{
private:
	CMaitrixAnimation();
	virtual ~CMaitrixAnimation();
public:

};

class CDrivingAnimation : public CBasicAnimation
{
private:
	CDrivingAnimation();
	virtual ~CDrivingAnimation();
public:

};
#endif /* IANIMATIONSTATE_H_ */

